home *** CD-ROM | disk | FTP | other *** search
/ Nibble Magazine / nib02.dsk / PIP II.bas < prev    next >
BASIC Source File  |  2023-02-26  |  22KB  |  230 lines

  1. 2  PRINT  CHR$(4)"NOMONI,O,C"
  2. 3  REM  *************************
  3. 4  REM  ** PERSONAL INVTY PROG **
  4. 5  REM  **  BY RICK CONNOLLY   **
  5. 6  REM  ** COPYRIGHT (C) 1980  **
  6. 7  REM  ** BY MICRO-SPARC INC. **
  7. 8  REM  ** LINCOLN, MASS 01773 **
  8. 9  REM  *************************
  9. 10  SPEED= 255: NORMAL : NOTRACE : TEXT : HOME : GOTO 3200
  10. 20  IF I$(1) = "DUMMY ENTRY"  THEN G = 0:N = 1: GOTO 110: REM  MERGE SUBROUTINE
  11. 30  FOR N = 1 TO G: IF I$(0) < = I$(N)  THEN 60
  12. 40  NEXT 
  13. 50  IF N >G  THEN 110
  14. 60 S0$ = "":SN$ = "": FOR I = 1 TO 30 - LEN(S$(0)):S0$ = S0$ +" ": NEXT :S0$ = S0$ +S$(0): FOR I = 1 TO 30 - LEN(S$(N)):SN$ = SN$ +" ": NEXT :SN$ = SN$ +S$(N)
  15. 70  IF S0$ >SN$  AND (I$(0) = I$(N))  THEN 90
  16. 80  ON (N >G) GOTO 110: GOTO 100
  17. 90 N = N +1: GOTO 60
  18. 100  FOR I = G +1 TO N  STEP  -1:I$(I) = I$(I -1):S$(I) = S$(I -1):DA%(I) = DA%(I -1):CO(I) = CO(I -1):CA%(I) = CA%(I -1):CV(I) = CV(I -1):RC(I) = RC(I -1):C$(I) = C$(I -1): NEXT 
  19. 110 I$(N) = I$(0):S$(N) = S$(0):DA%(N) = DA%(0):CO(N) = CO(0):CA%(N) = CA%(0):CV(N) = CV(0):RC(N) = RC(0):C$(N) = C$(0)
  20. 120 G = G +1: RETURN 
  21. 130  FOR I = N TO G -1:I$(I) = I$(I +1):S$(I) = S$(I +1):DA%(I) = DA%(I +1):CO(I) = CO(I +1):CA%(I) = CA%(I +1):CV(I) = CV(I +1):RC(I) = RC(I +1):C$(I) = C$(I +1): REM    DELETE SUBROUTINE
  22. 140  NEXT :G = G -1: RETURN 
  23. 300 T$ = I$(N): IF  LEN(T$) < = TL -TI  THEN  HTAB TI: PRINT T$;: RETURN : REM  FORMAT FOR SCREEN (40 COL) AND PRINTER (40 OR 80 COL)
  24. 310 LN =  LEN(T$): FOR J = TL -TI TO 1  STEP  -1:BP$ =  MID$ (T$,J,1): IF BP$ = " "  OR BP$ = "-"  OR BP$ = "/"  OR BP$ = ","  THEN 330
  25. 320  NEXT J: HTAB TI: PRINT  LEFT$(T$,TL -TI -1);: PRINT "-";:J = TL -TI -1: GOTO 340
  26. 330  HTAB TI: PRINT  LEFT$(T$,J);: IF LN < = TL -TI  THEN  RETURN 
  27. 340  PRINT :TI = TI +2: IF CH = 6  OR CH = 8  THEN TI = 5:TL = 40: IF W = 8  THEN TL = 80
  28. 350 D$ =  RIGHT$(T$,LN -J)
  29. 360  IF  LEFT$(D$,1) = " "  THEN LN =  LEN(D$) -1:D$ =  RIGHT$(D$,LN): GOTO 360
  30. 370 LN =  LEN(D$): FOR J = TL -TI TO 1  STEP  -1:BP$ =  MID$ (D$,J,1): IF BP$ = " "  OR BP$ = ","  OR BP$ = "/"  OR BP$ = "-"  OR LN < = TL -TI  THEN 390
  31. 380  NEXT J: HTAB TI: PRINT  LEFT$(D$,TL -TI -1);: PRINT "-";:J = TL -TI -1:LN =  LEN(D$): GOTO 400
  32. 390  HTAB TI: PRINT  LEFT$(D$,J);:
  33. 400  IF LN < = TL -TI  THEN  RETURN 
  34. 410  PRINT :D$ =  RIGHT$(D$,LN -J): GOTO 360
  35. 800  HOME : VTAB 4: HTAB 15: INVERSE : PRINT "CATEGORIES": NORMAL : VTAB 8
  36. 810  FOR I = 1 TO 9: PRINT I;: HTAB 5: PRINT CA$(I): NEXT 
  37. 820  VTAB 21: HTAB 7: PRINT "PLEASE SELECT THE CATEGORY ";: POKE  -16368,0: GET Z$: PRINT Z$:TI = 1:TL = 20:Z =  VAL(Z$): IF Z <1  THEN 820
  38. 830  HOME : HTAB 20 -( LEN(CA$(Z))/2): PRINT CA$(Z): PRINT : PRINT "                    ACQ     CURR   REPL": PRINT "       ITEM         COST    VAL    COST": PRINT 
  39. 840 C = 0:CV = 0:RC = 0
  40. 850 K = 5: POKE 34,5: FOR N = 1 TO G: IF CA%(N) < >Z  THEN 890
  41. 860 TI = 1:K2 = K: GOSUB 300:K3 =  PEEK(37): VTAB K2 +1:Q =  INT(CO(N)): GOSUB 920: HTAB 24 -D: PRINT Q;
  42. 870 Q =  ABS(CV(N)): GOSUB 920: HTAB 32 -D: PRINT Q;:Q =  ABS(RC(N)): GOSUB 920: HTAB 39 -D: PRINT Q
  43. 880 C = C +(CO(N)):CV = CV + ABS(CV(N)):RC = RC + ABS(RC(N)): POKE 37,K3: PRINT :K =  PEEK(37): IF K > = 20  THEN  GOSUB 3260: HOME :K = 5
  44. 890  NEXT : POKE 34,0: IF  PEEK(37) >19  THEN  HOME : VTAB 10: PRINT "CATEGORY ";CA$(Z): PRINT 
  45. 900  PRINT : PRINT "TOTAL ACQUISITION COST:";:Q = C: GOSUB 920: HTAB 35 -D: PRINT Q: PRINT "TOTAL CURRENT VALUE:";:Q = CV: GOSUB 920: HTAB 35 -D: PRINT Q
  46. 910  PRINT "TOTAL REPLACEMENT COST:";:Q = RC: GOSUB 920: HTAB 35 -D: PRINT Q: GOSUB 3260: GOTO 3800
  47. 920 Q =  INT(Q +.5):D = (Q > = 10) +(Q > = 100) +(Q > = 1000) +(Q > = 10000) +(Q > = 100000): RETURN 
  48. 1000  HOME : HTAB 6: PRINT "LISTING BY ACQUISITION COST": PRINT : PRINT "            ITEM                  COST": POKE 34,4: PRINT 
  49. 1010 T = 0:K = 4:TX = 0:TI = 1:TL = 30:QH = HQ: FOR I = 1 TO G: FOR N = 1 TO G: IF CO(N) <QH  THEN 1050
  50. 1020  IF CS%(N)  THEN 1060
  51. 1030 K2 = K: GOSUB 300:K3 =  PEEK(37): VTAB K2 +1:Q = CO(N): GOSUB 920: HTAB 38 -D: PRINT Q:T = T +CO(N): POKE 37,K3: PRINT :K =  PEEK(37): IF K > = 20  THEN  GOSUB 3260: HOME :K = 4
  52. 1040 TI = 1:TL = 30:CS%(N) = 1: GOTO 1060
  53. 1050  IF CO(N) >TX  THEN TX = CO(N)
  54. 1060  NEXT N:QH = TX:TX = 0: FOR Q3 = 1 TO G: IF CS%(Q3)  THEN  NEXT :I = G +1:N = G +1
  55. 1070  NEXT I: PRINT : PRINT "TOTAL ACQUISITION COST IS $"; INT(T +.5): GOSUB 3260: POKE 34,0: GOTO 3800
  56. 1200  HOME : HTAB 6: PRINT "LISTING BY REPLACEMENT COST": PRINT : PRINT "            ITEM                  COST": POKE 34,4: PRINT 
  57. 1210 T = 0:K = 4:TX = 0:TI = 1:TL = 30:QH = HR: FOR I = 1 TO G: FOR N = 1 TO G: IF  ABS(RC(N)) <QH  THEN 1250
  58. 1220  IF CS%(N)  THEN 1260
  59. 1230 K2 = K: GOSUB 300:K3 =  PEEK(37): VTAB K2 +1:Q =  ABS(RC(N)): GOSUB 920: HTAB 38 -D: PRINT Q:T = T + ABS(RC(N)): POKE 37,K3: PRINT :K =  PEEK(37): IF K > = 20  THEN  GOSUB 3260: HOME :K = 4
  60. 1240 TI = 1:TL = 30:CS%(N) = 1: GOTO 1260
  61. 1250  IF  ABS(RC(N)) >TX  THEN TX =  ABS(RC(N))
  62. 1260  NEXT N:QH = TX:TX = 0: FOR Q3 = 1 TO G: IF CS%(Q3)  THEN  NEXT :I = G +1:N = G +1
  63. 1270  NEXT I: PRINT : PRINT "TOTAL REPLACEMENT COST IS $"; INT(T +.5): GOSUB 3260: POKE 34,0: GOTO 3800
  64. 1400  HOME : HTAB 8: PRINT "LISTING BY CURRENT VALUE": PRINT : PRINT "            ITEM                  COST": POKE 34,4: PRINT 
  65. 1410 T = 0:K = 4:TX = 0:TI = 1:TL = 30:QH = HV: FOR I = 1 TO G: FOR N = 1 TO G: IF  ABS(CV(N)) <QH  THEN 1450
  66. 1420  IF CS%(N)  THEN 1460
  67. 1430 K2 = K: GOSUB 300:K3 =  PEEK(37): VTAB K2 +1:Q =  ABS(CV(N)): GOSUB 920: HTAB 38 -D: PRINT Q:T = T + ABS(CV(N)): POKE 37,K3: PRINT :K =  PEEK(37): IF K > = 20  THEN  GOSUB 3260: HOME :K = 4
  68. 1440 TI = 1:TL = 30:CS%(N) = 1: GOTO 1460
  69. 1450  IF  ABS(CV(N)) >TX  THEN TX =  ABS(CV(N))
  70. 1460  NEXT N:QH = TX:TX = 0: FOR Q3 = 1 TO G: IF CS%(Q3)  THEN  NEXT :I = G +1:N = G +1
  71. 1470  NEXT I: PRINT : PRINT "TOTAL CURRENT VALUE IS $"; INT(T +.5): GOSUB 3260: POKE 34,0: GOTO 3800
  72. 1600  HOME : HTAB 5: PRINT "LISTING BY YEAR OF ACQUISITION": PRINT : PRINT "            ITEM                  YEAR": POKE 34,4: PRINT 
  73. 1610 K = 4:TX = 0:TI = 1:TL = 30:QH = HY: FOR I = 1 TO G: FOR N = 1 TO G: IF DA%(N) <QH  THEN 1650
  74. 1620  IF CS%(N)  THEN 1660
  75. 1630 K2 = K: GOSUB 300:K3 =  PEEK(37): VTAB K2 +1: HTAB 35: PRINT DA%(N): POKE 37,K3: PRINT :K =  PEEK(37): IF K > = 20  THEN  GOSUB 3260: HOME :K = 4
  76. 1640 TI = 1:TL = 30:CS%(N) = 1: GOTO 1660
  77. 1650  IF DA%(N) >TX  THEN TX = DA%(N)
  78. 1660  NEXT N:QH = TX:TX = 0: FOR Q3 = 1 TO G: IF CS%(Q3)  THEN  NEXT : GOSUB 3260: POKE 34,0: GOTO 3800
  79. 1670  NEXT I: PRINT : PRINT : GOSUB 3260: POKE 34,0: GOTO 3800
  80. 1800  HOME : PRINT : PRINT "PLEASE ENTER THE KEYWORD.  ENTER " CHR$(34)"F" CHR$(34): PRINT "FIRST IF YOU WANT THE FIRST MATCHING": PRINT "KEYWORD TO LIST.  PRESS RETURN FOR MENU"
  81. 1810  INPUT K$:LO =  LEN(K$): IF K$ = ""  THEN 3800
  82. 1820 FL = 0: IF K$ < >"F"  THEN 1850
  83. 1830  PRINT : INPUT "ENTER THE KEYWORD: ";K$:LO =  LEN(K$): IF K$ = ""  THEN 3800
  84. 1840 FL = 1
  85. 1850  FOR I = 1 TO G:CS%(I) = 0: NEXT :TQ = 1: FOR I = 1 TO G: IF  LEFT$(I$(I),LO) = K$  THEN CS%(TQ) = I:TQ = TQ +1
  86. 1860  IF FL  AND CS%(1)  THEN TQ = 2:I = G
  87. 1870  NEXT I: IF TQ = 2  THEN N = CS%(1): GOTO 1920
  88. 1880  IF TQ = 1  THEN  PRINT : PRINT  CHR$(7)"KEYWORD NOT FOUND.  TRY AGAIN.": GOTO 1810
  89. 1890  POKE 34,0: HOME :Z$ = K$ +" WAS FOUND IN:": HTAB 20 -( LEN(Z$)/2): PRINT Z$: PRINT : PRINT "CODE         ITEM//SERIAL NUMBER": POKE 34,4: PRINT 
  90. 1900 TI = 5:TL = 40: FOR I = 1 TO TQ -1:I$(0) = I$(CS%(I)) +"//" +S$(CS%(I)):N = 0: PRINT CS%(I);: GOSUB 300: PRINT "": IF  PEEK(37) > = 21  THEN  GOSUB 3260: HOME 
  91. 1910  NEXT : PRINT : INPUT "SELECT YOUR CHOICE BY CODE NO. ";Z$: POKE 34,0:N =  VAL(Z$): IF N <1  OR N >G  THEN 3800
  92. 1920  POKE 34,0: HOME :TI = 7:TL = 39: PRINT "ITEM: ";: GOSUB 300: PRINT : PRINT : PRINT "SERIAL NUMBER: ";S$(N);: IF S$(N) = ""  THEN  PRINT "NONE";
  93. 1930  PRINT : PRINT : PRINT "YEAR ACQUIRED: ";DA%(N): PRINT : PRINT "ACQUISITION COST: $"; INT(CO(N) +.5): PRINT : PRINT "CURRENT VALUE: $"; ABS( INT(CV(N) +.5));: IF CV(N) <0  THEN  PRINT " *";
  94. 1940  PRINT : PRINT : PRINT "REPLACEMENT COST: $" ABS( INT(RC(N) +.5));: IF RC(N) <0  THEN  PRINT " #";
  95. 1950  PRINT : PRINT : PRINT "COMMENTS: ";: IF C$(N) = ""  THEN  PRINT "NONE": GOTO 1970
  96. 1960 TI = 11:TL = 40:Z$ = I$(N):I$(N) = C$(N): GOSUB 300: PRINT "":I$(N) = Z$
  97. 1970  PRINT : IF CV(N) <0  THEN  PRINT "* CURRENT VALUE AT "(DL *100)"% DEPRECIATION."
  98. 1980  IF RC(N) <0  THEN  PRINT "# REPLACEMENT COST AT "(IL *100)"% INFLATION."
  99. 1990  VTAB 24: POKE  -16368,0: PRINT "DO YOU WANT TO CHANGE THE DATA (Y/N)";: GET Z$: IF Z$ < >"Y"  THEN 3800
  100. 2000  HOME : PRINT "IS " LEFT$(I$(N),36): PRINT "THE ITEM YOU WANT TO CHANGE? ";: POKE  -16368,0: GET Z$: PRINT Z$: IF Z$ < >"Y"  THEN 3800
  101. 2005 C = CO(N):CV =  ABS(CV(N)):RD =  ABS(RC(N)):N1 = N:N2 = N: PRINT : PRINT "RETAIN THIS ITEM? ";: GET Z$: PRINT Z$: PRINT : IF Z$ < >"N"  THEN 2025
  102. 2010  INPUT "ENTER '#' TO CONFIRM DELETE ";Z$: PRINT : IF Z$ < >"#"  THEN 2025
  103. 2015  FLASH : HTAB 16: PRINT "DELETING": NORMAL : GOSUB 2145: GOSUB 130: IF HQ = 0  THEN N2 = G
  104. 2020  GOSUB 3530:CM = 1: GOTO 3800
  105. 2025  PRINT I$(N): PRINT : PRINT "IS NAME CORRECT? ";: GET Z$: PRINT Z$: IF Z$ < >"N"  THEN 2040
  106. 2030  PRINT : PRINT "ENTER NEW NAME, PRECEDED BY A QUOTE:": INPUT I$(0):S$(0) = S$(N):DA%(0) = DA%(N):CO(0) = CO(N):CA%(0) = CA%(N):CV(0) = CV(N):RC(0) = RC(N):C$(0) = C$(N):CM = 1
  107. 2035  PRINT : FLASH : HTAB 16: PRINT "DELETE";: HTAB 16: GOSUB 130: PRINT "MERGE";: NORMAL : PRINT " ":N1 = 0:N2 = 0: GOSUB 3460: GOSUB 20: GOTO 1920
  108. 2040  HOME : PRINT "IS "S$(N);: IF S$(N) = ""  THEN  PRINT "<NO SERIAL NUMBER ENTERED>"
  109. 2045  PRINT : PRINT "THE CORRECT SERIAL NUMBER? ";: GET Z$: PRINT Z$: PRINT : IF Z$ < >"N"  THEN 2055
  110. 2050  PRINT "ENTER THE CORRECT NUMBER, USING LEADING": INPUT "QUOTE: ";S$(N): PRINT :CM = 1
  111. 2055  PRINT "IS "DA%(N)" THE YEAR OF ACQUISITION? ";: GET Z$: PRINT Z$: PRINT : IF Z$ < >"N"  THEN 2065
  112. 2060  INPUT "CORRECT YEAR ACQUIRED? ";DA%(N): PRINT :CM = 1: IF DA%(N) <1100  THEN DA%(N) = DA%(N) +1900
  113. 2065  PRINT "IS $"CO(N)" THE CORRECT COST? ";: GET Z$: PRINT Z$: IF Z$ < >"N"  THEN 2075
  114. 2070  PRINT : INPUT "ENTER THE CORRECT COST: $";CO(N):CM = 1
  115. 2075  HOME : FOR I = 1 TO 9: PRINT I;: HTAB 4: PRINT CA$(I): NEXT : PRINT : PRINT "IS CATEGORY "CA%(N)" CORRECT? ";: GET Z$: PRINT Z$: IF Z$ < >"N"  THEN 2085
  116. 2080  PRINT : INPUT "ENTER THE CORRECT CATEGORY ";CA%(N):CM = 1: IF CA%(N) <1  OR CA%(N) >9  THEN 2080
  117. 2085  HOME : PRINT "CURRENT VALUE ";: IF CV(N) <0  THEN  PRINT "ESTIMATED";: GOTO 2095
  118. 2090  PRINT "$"CV(N);
  119. 2095  PRINT ". CORRECT? ";: GET Z$: PRINT Z$: PRINT : IF Z$ < >"N"  THEN 2105
  120. 2100  PRINT "ENTER THE CURRENT VALUE OR PRESS RETURN": INPUT "TO HAVE PIP ESTIMATE. $";Z$: PRINT :CV(N) =  VAL(Z$):CM = 1
  121. 2105  PRINT "REPLACEMENT COST ";: IF RC(N) <0  THEN  PRINT "ESTIMATED";: GOTO 2115
  122. 2110  PRINT "$"RC(N);
  123. 2115  PRINT ". CORRECT? ";: GET Z$: PRINT Z$: PRINT : IF Z$ < >"N"  THEN 2125
  124. 2120  INPUT "ENTER THE REPLACEMENT COST OR PRESS     RETURN TO HAVE PIP ESTIMATE. $";Z$: PRINT :RC(N) =  VAL(Z$):CM = 1
  125. 2125  PRINT C$(N);: IF C$(N) = ""  THEN  PRINT "<NO COMMENT ENTERED>"
  126. 2130  PRINT : PRINT : PRINT "COMMENT CORRECT? ";: GET Z$: PRINT Z$: IF Z$ < >"N"  THEN 2140
  127. 2135  PRINT : PRINT "ENTER THE CORRECT COMMENT PRECEEDED BY": INPUT "A QUOTE: ";C$(N):CM = 1
  128. 2140  GOSUB 3460: GOSUB 2145: GOSUB 3530: GOTO 1920
  129. 2145  IF C = HQ  OR RD = HR  OR CV = HV  THEN N1 = 1:N2 = G:HQ = 0:HR = 0:HV = 0
  130. 2150  RETURN 
  131. 2200  HOME : VTAB 2: HTAB 13: PRINT "CURRENT STATUS": PRINT : PRINT : PRINT "  CATEGORY         ACQ     REP     CURR                    COST    COST    VAL": PRINT 
  132. 2210 C1 = 0:R1 = 0:V1 = 0: FOR I = 1 TO 9: PRINT CA$(I);:C = 0:CV = 0:RC = 0: FOR J = 1 TO G: IF CA%(J) = I  THEN C = C +CO(J):CV = CV + ABS(CV(J)):RC = RC + ABS(RC(J))
  133. 2220  NEXT 
  134. 2230 C1 = C1 +C:R1 = R1 +RC:V1 = V1 +CV
  135. 2240 Q = C: GOSUB 920: HTAB 23 -D: PRINT Q;:Q = RC: GOSUB 920: HTAB 31 -D: PRINT Q;:Q = CV: GOSUB 920: HTAB 39 -D: PRINT Q: NEXT 
  136. 2250  PRINT : PRINT : PRINT "GRAND TOTAL";:Q = C1: GOSUB 920: HTAB 23 -D: PRINT Q;:Q = R1: GOSUB 920: HTAB 31 -D: PRINT Q;:Q = V1: GOSUB 920: HTAB 39 -D: PRINT Q: GOSUB 3260: GOTO 3800
  137. 2400  HOME : PRINT "  THIS OPTION REQUIRES A 40 OR 80 COLUMNPRINTER.  TO PRINT, PRESS 'P'.  IF YOU  DO NOT WANT TO PRINT, PRESS 'R' TO RE-"
  138. 2410  PRINT "TURN TO THE MENU, OR PRESS 'S' TO LIST  ON THE SCREEN.  PRESSING 'P' WITHOUT A  PRINTER TURNED ON AT PR#1 WILL CAUSE"
  139. 2420  PRINT "THE PROGRAM TO HANG.  PLEASE ENTER YOUR CHOICE: ";: POKE  -16368,0: GET Z$: PRINT Z$: IF Z$ < >"S"  AND Z$ < >"P"  THEN 3800
  140. 2430  IF Z$ = "S"  THEN  SPEED= 175:W = 40: GOTO 2500
  141. 2440  PRINT : PRINT "PLEASE ENTER THE PRINTING WIDTH (40 OR": INPUT "80 COLUMN) ";W: PRINT : IF W < >40  AND W < >80  THEN 2440
  142. 2450  PRINT "ENTER THE MONTH AS JANUARY, FEBRUARY,": INPUT "MARCH, ETC ";M$
  143. 2460  PRINT : INPUT "ENTER TODAY'S DATE ";D$
  144. 2470  HOME : PRINT  CHR$(4)"PR#1": FOR I = 1 TO 8: PRINT : NEXT 
  145. 2480  HTAB (9 +((W -40)/2)): PRINT "PROPERTY INVENTORY OF": PRINT :TL = (W - LEN(ME$))/2: HTAB TL: PRINT ME$: PRINT :Z$ = "CURRENT AS OF " +M$ +" " +D$ +", " + STR$(Y%):TL = (W - LEN(Z$))/2
  146. 2490  HTAB TL: PRINT Z$: PRINT : PRINT : PRINT 
  147. 2500  HOME : FOR I = 1 TO 6:CS(I) = 0: NEXT : FOR I = 1 TO 9
  148. 2510  PRINT : PRINT : PRINT :TL = (W - LEN(CA$(I)))/2: FOR K = 1 TO TL -1: PRINT "*";: NEXT : PRINT CA$(I);: FOR L = K + LEN(CA$(I)) TO W: PRINT "*";: NEXT : PRINT : PRINT : PRINT 
  149. 2520  FOR N = 1 TO G: IF CA%(N) < >I  THEN 2590
  150. 2530 TI = 1:TL = W -1: GOSUB 300: PRINT : PRINT "  SERIAL NUMBER: ";: PRINT S$(N);: IF S$(N) = ""  THEN  PRINT "NONE";
  151. 2540  PRINT : PRINT "  ACQUIRED: ";DA%(N): PRINT "  ACQUISITION COST: $";:Q = CO(N): GOSUB 920: HTAB 28 -D: PRINT Q
  152. 2550  PRINT "  CURRENT VALUE:    $";:Q =  ABS(CV(N)): GOSUB 920: HTAB 28 -D: PRINT Q;: IF CV(N) <0  THEN  PRINT " *";
  153. 2560  PRINT : PRINT "  REPLACEMENT COST: $";:Q =  ABS(RC(N)): GOSUB 920: HTAB 28 -D: PRINT Q;: IF RC(N) <0  THEN  PRINT " #";
  154. 2570  PRINT : PRINT "  COMMENTS: ";:TI = 13:TL = W -1:I$(0) = I$(N):I$(N) = C$(N): GOSUB 300:I$(N) = I$(0): IF C$(N) = ""  THEN  PRINT "NONE";
  155. 2580  PRINT : PRINT : PRINT :CS(1) = CS(1) +CO(N):CS(2) = CS(2) + ABS(CV(N)):CS(3) = CS(3) + ABS(RC(N))
  156. 2590  NEXT N: PRINT : PRINT : PRINT "* INDICATES CURRENT VALUE ESTIMATED AT ";: IF W = 40  THEN  PRINT 
  157. 2600  PRINT DL *100"% ANNUAL DEPRECIATION.": PRINT 
  158. 2610  PRINT "# INDICATES CURRENT REPLACEMENT COST ";: IF W = 40  THEN  PRINT 
  159. 2620  PRINT "ESTIMATED AT "IL *100"% ANNUAL INFLATION.": PRINT : PRINT : PRINT 
  160. 2630  PRINT : PRINT : PRINT "FOR THE CATEGORY "; CHR$(34);CA$(I); CHR$(34);":": PRINT 
  161. 2640  PRINT "TOTAL ACQUISITION COST: $";:Q = CS(1): GOSUB 920: HTAB 35 -D: PRINT Q
  162. 2650  PRINT "TOTAL CURRENT VALUE     $";:Q = CS(2): GOSUB 920: HTAB 35 -D: PRINT Q
  163. 2660  PRINT "TOTAL REPLACEMENT COST: $";:Q = CS(3): GOSUB 920: HTAB 35 -D: PRINT Q
  164. 2670  PRINT : PRINT : PRINT  CHR$(12):CS(4) = CS(4) +CS(1):CS(1) = 0:CS(5) = CS(5) +CS(2):CS(2) = 0:CS(6) = CS(6) +CS(3):CS(3) = 0: NEXT I: PRINT : PRINT : PRINT 
  165. 2680  FOR I = 1 TO W: PRINT "X";: NEXT : PRINT : PRINT : PRINT "GRAND TOTAL ACQUISITION COST: $";:Q = CS(4): GOSUB 920: HTAB 40 -D: PRINT Q
  166. 2690  PRINT "GRAND TOTAL CURRENT VALUE:    $";:Q = CS(5): GOSUB 920: HTAB 40 -D: PRINT Q: PRINT "GRAND TOTAL REPLACEMENT COST: $";:Q = CS(6): GOSUB 920: HTAB 40 -D: PRINT Q
  167. 2700  PRINT : PRINT : PRINT "  THE INFORMATION CONTAINED IN THIS ";: IF W = 40  THEN  PRINT 
  168. 2710  PRINT "DOCUMENT IS A TRUE REPRESENTATION OF MY": PRINT "PERSONAL PROPERTY.  THE DATES OF ";: IF W = 40  THEN  PRINT 
  169. 2720  PRINT "ACQUISITION AND THE ORIGINAL VALUES ARE": PRINT "AS ACCURATE AS POSSIBLE."
  170. 2730  PRINT : PRINT : PRINT : HTAB W -20: PRINT "SIGNED": PRINT : PRINT : PRINT : PRINT : PRINT :L = W -1 - LEN(ME$): IF L >(W -1)/2  THEN L =  INT((W -1)/2)
  171. 2740  HTAB L: PRINT ME$: PRINT : PRINT : PRINT : FOR I = 1 TO W: PRINT "X";: NEXT : FOR I = 1 TO 6: PRINT : NEXT : PRINT  CHR$(12): PRINT  CHR$(12): PRINT  CHR$(4)"PR#0": SPEED= 255: GOTO 3800
  172. 2750  REM  CHR$(12) IS A FORM FEED ON SOME PRINTERS
  173. 3000  HOME : IF CM = 0  THEN  PRINT "NO CHANGES MADE.  YOU MAY REMOVE DISK.": PRINT : END 
  174. 3010  PRINT : INPUT "CURRENT MONTH? ";MM$: PRINT : INPUT "TODAY'S DATE? ";DM$:YM% = Y%: PRINT : HTAB 14: PRINT "PLEASE WAIT": PRINT 
  175. 3020  PRINT  CHR$(4)"OPEN PIP DATA": PRINT  CHR$(4)"WRITE PIP DATA": PRINT G: PRINT MM$: PRINT DM$: PRINT YM%: PRINT IL *100: PRINT DL *100
  176. 3030  FOR I = 1 TO G: PRINT  CHR$(34)I$(I): PRINT  CHR$(34)S$(I): PRINT DA%(I): PRINT CO(I): PRINT CA%(I): PRINT CV(I): PRINT RC(I): PRINT  CHR$(34)C$(I): NEXT : PRINT  CHR$(4)"CLOSE PIP DATA"
  177. 3040  IF I$(1) = "DUMMY ENTRY"  THEN  RUN 
  178. 3050  PRINT : PRINT "PROGRAM ENDED.  YOU MAY REMOVE DISK.": PRINT : END 
  179. 3200  FOR I = 1 TO 9: READ CA$(I): NEXT : DATA  PHOTOGRAPHIC,ELECTRONIC,ANTIQUES,JEWELRY,FURNITURE,CLOTHING,HOUSEHOLD,AUTOMOTIVE,MISCELLANEOUS
  180. 3210  HOME : VTAB 10: HTAB 2: PRINT "PERSONAL INVENTORY CONTROL PROGRAM": VTAB 12: HTAB 9: PRINT "COPYRIGHT (C) 1980 BY"
  181. 3220  VTAB 14: HTAB 8: PRINT "MAURICE R. CONNOLLY JR.": VTAB 16: HTAB 10: PRINT "ALL RIGHTS RESERVED": FOR I = 1 TO 2500: NEXT 
  182. 3230  ONERR  GOTO 4200
  183. 3235  PRINT  CHR$(4)"OPEN PIP DATA": PRINT  CHR$(4)"READ PIP DATA": INPUT G: POKE 216,0: INPUT MM$: INPUT DM$: INPUT YM%: INPUT IM: INPUT DM:DI = G +50
  184. 3237  DIM I$(DI),S$(DI),DA%(DI),CO(DI),CA%(DI),CV(DI),RC(DI),C$(DI),CS%(DI)
  185. 3240  FOR I = 1 TO G: INPUT I$(I),S$(I),DA%(I),CO(I),CA%(I),CV(I),RC(I),C$(I): NEXT : PRINT  CHR$(4)"CLOSE PIP DATA"
  186. 3250  HOME : PRINT "DATA WAS LAST MODIFIED ON": PRINT MM$" "DM$", "YM%: PRINT : PRINT "INFLATION RATE USED: "IM"%": PRINT "DEFLATION RATE USED: "DM"%"
  187. 3255  PRINT : PRINT "DO YOU WANT TO RECALCULATE RATES? ";: POKE  -16368,0: GET Z$: PRINT Z$: GOTO 3270
  188. 3260  POKE  -16368,0: VTAB 24: PRINT "       PRESS ANY KEY TO CONTINUE ";: GET Z$: PRINT Z$: RETURN 
  189. 3270  PRINT : INPUT "PLEASE ENTER THE YEAR ";Y%:IL = .1:DL = .1: IF Y% <1000  THEN Y% = Y% +1900
  190. 3280 ME$ = "YOUR NAME GOES HERE"
  191. 3290  PRINT : IF Y% < >YM%  THEN  PRINT "THIS IS A DIFFERENT YEAR.  SHALL I      RECALCULATE THE CURRENT VALUES AND RE-  PLACEMENT COSTS FOR YOU? ";: GET Z$: PRINT Z$: IF Z$ = "Y"  THEN CM = 1
  192. 3330  IF Z$ < >"Y"  THEN IL = IM/100:DL = DM/100:DR = 1 -DL:AR = 1 +IL:N1 = 1:N2 = G: GOSUB 3530:YM% = Y%: GOTO 3800
  193. 3340 CM = 1: PRINT : PRINT "IS  A 10% APPRECIATION/DEPRECIATION RATEO.K.? ";: POKE  -16368,0: GET Z$: PRINT Z$: IF Z$ = "Y"  THEN 3450
  194. 3350  PRINT : PRINT "PLEASE ENTER RATES AS PERCENTAGES,      E.G. 8, 8.5, 9,ETC.": PRINT : INPUT "APPRECIATION RATE? ";IL: PRINT : INPUT "DEPRECIATION RATE? ";DL: PRINT :IL = IL *.01:DL = DL *.01
  195. 3450  PRINT : PRINT : PRINT "I AM NOW COMPUTING CURRENT VALUE AND    CURRENT REPLACEMENT COSTS WHERE YOU     HAVE NOT SPECIFIED THEM.":DR = 1 -DL:AR = 1 +IL:N1 = 1:N2 = G: GOSUB 3460: GOTO 3800
  196. 3460  FOR I = N1 TO N2:Y1 = Y% -DA%(I): IF CV(I) >0  THEN 3490
  197. 3470  IF Y1 = 0  THEN CV(I) = CO(I) * -1: GOTO 3490
  198. 3480 CV(I) = CO(I) *DR ^Y1 * -1
  199. 3490  IF RC(I) >0  THEN 3520
  200. 3500  IF Y1 = 0  THEN RC(I) = CO(I) * -1: GOTO 3520
  201. 3510 RC(I) = CO(I) *AR ^Y1 * -1
  202. 3520  NEXT 
  203. 3530  FOR I = N1 TO N2: IF CO(I) >HQ  THEN HQ = CO(I)
  204. 3540  IF  ABS(RC(I)) >HR  THEN HR =  ABS(RC(I))
  205. 3550  IF  ABS(CV(I)) >HV  THEN HV =  ABS(CV(I))
  206. 3560  IF DA%(I) >HY  THEN HY = DA%(I)
  207. 3570  NEXT :RC = 0: RETURN 
  208. 3800  HOME : VTAB 4: INVERSE : HTAB 16: PRINT "OPTIONS": NORMAL : VTAB 8: FOR I = 1 TO G:CS%(I) = 0: NEXT : PRINT "1.  LIST ALPHABETICALLY BY CATEGORY"
  209. 3810  PRINT "2.  LIST BY DECREASING ACQUISITION COST": PRINT "3.  LIST BY DECREASING REPLACEMENT COST": PRINT "4.  LIST BY DECREASING CURRENT VALUE"
  210. 3820  PRINT "5.  LIST BY YEAR OF PURCHASE": PRINT "6.  DISPLAY FULL DATA ON ANY ITEM": PRINT "7.  DISPLAY CURRENT STATUS": PRINT "8.  PRINT CURRENT STATUS": PRINT "9.  ";: FLASH : PRINT "EXIT": NORMAL 
  211. 3825  PRINT "0.  ADD NEW ENTRY": PRINT : PRINT : HTAB 9: PRINT "THERE ARE "G" ENTRIES"
  212. 3830  VTAB 23: HTAB 7: PRINT "PLEASE SELECT YOUR OPTION ";: POKE  -16368,0: GET Z$: PRINT Z$:CH =  VAL(Z$)
  213. 3840  ON CH GOTO 800,1000,1200,1400,1600,1800,2200,2400,3000
  214. 4000  HOME : IF G = DI  THEN  PRINT  CHR$(7)"ALL ARRAYS ARE FULL  YOU MUST EXIT THE": PRINT "PROGRAM, THEN RUN IT AGAIN TO ADD MORE": PRINT "DATA.": GOSUB 3260: GOTO 3800
  215. 4010  INVERSE : PRINT "ADD NEW ENTRY";: NORMAL : PRINT "  PRECEDE NAME, SERIAL #": PRINT "& COMMENT WITH A QUOTE MARK (" CHR$(34)"). PRESS": PRINT "RETURN FOR MENU."
  216. 4020  PRINT : INPUT "NAME? ";I$(0): IF I$(0) = ""  THEN 3800
  217. 4030 CM = 1: PRINT : INPUT "ENTER THE SERIAL NUMBER, OR PRESS RETURNIF NONE: ";S$(0): PRINT 
  218. 4040  INPUT "YEAR ACQUIRED? ";DA%(0): IF DA%(0) <1100  THEN DA%(0) = DA%(0) +1900
  219. 4050  PRINT : INPUT "COST OF ITEM? ";CO(0)
  220. 4060  HOME : FOR I = 1 TO 9: PRINT I;: HTAB 4: PRINT CA$(I): NEXT : PRINT : PRINT : INPUT "CATEGORY? ";CA%(0): IF CA%(0) <1  OR CA%(0) >9  THEN 4060
  221. 4070  HOME : PRINT "ENTER CURRENT VALUE IF KNOWN, OR PRESS": INPUT "RETURN FOR ESTIMATE: $";Z$:CV(0) =  VAL(Z$)
  222. 4080  PRINT : PRINT "ENTER REPLACEMENT COST IF KNOWN, OR": INPUT "PRESS RETURN FOR ESTIMATE: $";Z$:RC(0) =  VAL(Z$)
  223. 4090  PRINT : PRINT "ENTER ANY COMMENTS, PRECEEDED BY A      QUOTE.  PRESS RETURN IF NONE": PRINT : INPUT C$(0):N1 = 0:N2 = 0: GOSUB 3460
  224. 4100  FLASH : PRINT : PRINT : HTAB 18: PRINT "MERGE": NORMAL : GOSUB 20: GOTO 1920
  225. 4200  POKE 216,0: HOME : PRINT "THERE IS NO RECOVERABLE DATA ON THIS": INPUT "DISK.  IS THIS THE FIRST TIME YOU HAVE  RUN PIP? ";Z$: IF Z$ = "Y"  THEN 4220
  226. 4210  PRINT : PRINT "PLEASE INSURE THE FILE 'PIP DATA' IS ON THIS DISK.  THERE IS A READ ERROR ON THEFIRST ENTRY.": END 
  227. 4220  PRINT : PRINT "I WILL CREATE A DUMMY ENTRY WHICH WILL  BE REPLACED BY YOUR FIRST VALID ENTRY."
  228. 4230  PRINT :G = 1:CM = 1:IL = .1:DL = .1:MM$ = "NONE":DM$ = "NONE":YM% = 0:I$(1) = "DUMMY ENTRY":S$(1) = I$(1):C$(1) = I$(1):DA%(1) = 1:CO(1) = 1
  229. 4240 CA%(1) = 1:CV(1) = 1:RC(1) = 1: PRINT : INPUT "CURRENT YEAR? ";Y%: IF Y% <1100  THEN Y% = Y% +1900
  230. 4250  GOTO 3010